home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.3 Development Libraries / SGI IRIX 6.3 Development Libraries.iso / dist6.3 / gl_dev.idb / usr / include / gl / gl.h.z / gl.h
Encoding:
C/C++ Source or Header  |  1996-12-06  |  49.0 KB  |  1,550 lines

  1. #ifndef __GL_GL_H__
  2. #define __GL_GL_H__
  3. /**************************************************************************
  4.  *                                      *
  5.  *          Copyright (C) 1984, Silicon Graphics, Inc.          *
  6.  *                                      *
  7.  *  These coded instructions, statements, and computer programs  contain  *
  8.  *  unpublished  proprietary  information of Silicon Graphics, Inc., and  *
  9.  *  are protected by Federal copyright law.  They  may  not be disclosed  *
  10.  *  to  third  parties  or copied or duplicated in any form, in whole or  *
  11.  *  in part, without the prior written consent of Silicon Graphics, Inc.  *
  12.  *                                      *
  13.  **************************************************************************/
  14.  
  15. #ifdef __cplusplus
  16. extern "C" {
  17. #endif
  18. /*
  19.  * Workarounds for collisions with X header files.  gl.h contains
  20.  * two copies of this, once to define and once to undef
  21.  */
  22.  
  23. #ifdef _GL_UNDEF_TYPES
  24.  
  25. /* this is the second time, remove my ugliness */
  26. #undef String
  27. #undef Boolean
  28. #undef Object
  29.  
  30. #else
  31.  
  32. /* this is the first time, create the ugliness */
  33. #ifdef _XtIntrinsic_h
  34. #define String GL_String
  35. #define Boolean GL_Boolean
  36. #endif
  37.  
  38. #ifdef _XtObject_h
  39. #define Object GL_Object
  40. #endif
  41.  
  42. #define _GL_UNDEF_TYPES
  43.  
  44. #endif
  45.  
  46. /* Graphics Libary constants */
  47.  
  48. #ifndef    NULL
  49. #define NULL            0
  50. #endif
  51.  
  52. #ifndef    FALSE
  53. #define FALSE            0
  54. #endif
  55.  
  56. #ifndef    TRUE
  57. #define TRUE            1
  58. #endif
  59.  
  60.  
  61. /* various hardware/software limits */
  62. #define ATTRIBSTACKDEPTH    10
  63. #define VPSTACKDEPTH        8
  64. #define MATRIXSTACKDEPTH    32
  65. #define NAMESTACKDEPTH        1025
  66.  
  67. /* special pre-defined tags */
  68. #define STARTTAG        -2
  69. #define ENDTAG            -3
  70.  
  71. /* names for colors in color map loaded by greset */
  72. #define BLACK            0
  73. #define RED            1
  74. #define GREEN            2
  75. #define YELLOW            3
  76. #define BLUE            4
  77. #define MAGENTA            5
  78. #define CYAN            6
  79. #define WHITE            7
  80.  
  81. /* popup colors */
  82. #define PUP_CLEAR        0
  83. #define PUP_COLOR        1
  84. #define PUP_BLACK        2
  85. #define PUP_WHITE        3
  86.  
  87. /* defines for drawmode and mswapbuffers*/
  88. #define NORMALDRAW        0x010
  89. #define PUPDRAW            0x020
  90. #define OVERDRAW        0x040
  91. #define UNDERDRAW        0x080
  92. #define CURSORDRAW        0x100
  93. #define DUALDRAW        0x200    /* obselete skywriter only */
  94. #define GANGDRAW        0x200    /* not available on skywriter */
  95. #define HYPER0            0x10000
  96. #define HYPER1            0x20000
  97. #define HYPER2            0x40000
  98.  
  99. /* defines for defpattern */
  100. #define PATTERN_16        16
  101. #define PATTERN_32        32
  102. #define PATTERN_64        64
  103.  
  104. #define PATTERN_16_SIZE        16
  105. #define PATTERN_32_SIZE        64
  106. #define PATTERN_64_SIZE        256
  107.  
  108. /* defines for readsource */
  109. #define SRC_NULL        -1
  110. #define SRC_AUTO        0
  111. #define SRC_FRONT        1
  112. #define SRC_FRONTLEFT         1
  113. #define SRC_BACK        2
  114. #define SRC_BACKLEFT         2
  115. #define SRC_ZBUFFER        3
  116. #define SRC_PUP            4
  117. #define SRC_OVER        5
  118. #define SRC_UNDER        6
  119. #define SRC_FRAMEGRABBER     7
  120. #define SRC_FRONTRIGHT         8
  121. #define SRC_BACKRIGHT         9
  122. #define SRC_ILBUFFER_1        1000
  123. #define SRC_ILBUFFER_2        1001
  124. #define SRC_ILBUFFER_3        1002
  125. #define SRC_ILBUFFER_4        1003
  126. #define SRC_ILBUFFER_5        1004
  127. #define SRC_ILBUFFER_6        1005
  128. #define SRC_ILBUFFER_7        1006
  129. #define SRC_ILBUFFER_8        1007
  130. #define SRC_ILBUFFER_9        1008
  131. #define SRC_ILBUFFER_10        1009
  132. #define SRC_ILBUFFER_11        1010
  133. #define SRC_ILBUFFER_12        1011
  134. #define SRC_ILBUFFER_13        1012
  135. #define SRC_ILBUFFER_14        1013
  136. #define SRC_ILBUFFER_15        1014
  137. #define SRC_ILBUFFER_16        1015
  138.  
  139. /* minmax */
  140. #define MINMAX_ENABLE           0
  141. #define MINMAX_DISABLE          1
  142. #define MINMAX_INIT             2
  143.  
  144. /* histogram */
  145. #define HIST_ENABLE        0
  146. #define HIST_DISABLE        1
  147. #define HIST_CLEAR        2
  148.  
  149. /* defines for readcomponent */
  150. #define RC_ABGR            4
  151. #define RC_ALPHA        0
  152. #define RC_BLUE            1
  153. #define RC_GREEN        2
  154. #define RC_RED            3
  155.  
  156. /* defines for blendfunction */
  157. #define BF_ZERO            0
  158. #define BF_ONE            1
  159. #define BF_DC            2
  160. #define BF_SC            2
  161. #define BF_MDC            3
  162. #define BF_MSC            3
  163. #define BF_SA            4
  164. #define BF_MSA            5
  165. #define BF_DA            6
  166. #define BF_MDA            7
  167. #define BF_MIN_SA_MDA        8
  168. #define BF_CA            9
  169. #define BF_MCA            10
  170. #define BF_CC            11
  171. #define BF_MCC            12
  172. #define BF_MIN            13
  173. #define BF_MAX            14
  174.  
  175. /* defines for afunction */
  176. #define AF_NEVER            0
  177. #define AF_LESS             1
  178. #define AF_EQUAL            2
  179. #define AF_LEQUAL           3
  180. #define AF_GREATER          4
  181. #define AF_NOTEQUAL         5
  182. #define AF_GEQUAL           6
  183. #define AF_ALWAYS           7
  184.  
  185. /* defines for zfunction */
  186. #define ZF_NEVER        0
  187. #define ZF_LESS            1
  188. #define ZF_EQUAL        2
  189. #define ZF_LEQUAL        3
  190. #define ZF_GREATER        4
  191. #define ZF_NOTEQUAL        5
  192. #define ZF_GEQUAL        6
  193. #define ZF_ALWAYS        7
  194.  
  195. /* defines for zsource */
  196. #define ZSRC_DEPTH        0
  197. #define ZSRC_COLOR        1
  198.  
  199. /* defines for pntsmooth */
  200. #define SMP_OFF            0x0
  201. #define SMP_ON            0x1
  202. #define SMP_SMOOTHER        0x2
  203.  
  204. /* defines for linesmooth */
  205. #define SML_OFF            0x0
  206. #define SML_ON            0x1
  207. #define SML_SMOOTHER        0x2
  208. #define SML_END_CORRECT        0x4
  209.  
  210. /* defines for polysmooth, NOTE, these must be decimal to allow
  211.  * macros in STAPUFT pe ucode (modes.m) to build
  212.  */
  213. #define PYSM_OFF                0
  214. #define PYSM_ON                 1
  215. #define PYSM_SHRINK             2
  216.  
  217. /* defines for msalpha */
  218. #define MSA_MASK        0x0
  219. #define MSA_MASK_ONE        0x1
  220. #define MSA_ALPHA        0x2
  221.  
  222. /* defines for mssample */
  223. #define MSS_POINT        0x0
  224. #define MSS_AREA        0x1
  225. #define MSS_CENTER_POINT    0x2
  226.  
  227. /* defines for mspattern */
  228. #define MSP_DEFAULT        0x0
  229. #define MSP_2PASS_0        0x1
  230. #define MSP_2PASS_1        0x2
  231. #define MSP_4PASS_0        0x3
  232. #define MSP_4PASS_1        0x4
  233. #define MSP_4PASS_2        0x5
  234. #define MSP_4PASS_3        0x6
  235.  
  236. /* dither modes    */
  237. #define DT_OFF            0
  238. #define DT_ON            1
  239.  
  240. /* defines for setpup */
  241. #define PUP_NONE        0
  242. #define PUP_GREY        0x1
  243. #define PUP_BOX            0x2
  244. #define PUP_CHECK        0x4
  245.  
  246. /* defines for glcompat */
  247. #define GLC_OLDPOLYGON        0
  248. #define GLC_ZRANGEMAP        1
  249. #define GLC_MQUEUERATE        2
  250. #define GLC_SOFTATTACH        3
  251. #define GLC_MANAGEBG        4
  252. #define GLC_SLOWMAPCOLORS    5
  253. #define GLC_INPUTCHANGEBUG    6
  254. #define GLC_NOBORDERBUG        7
  255. #define GLC_SET_VSYNC        8
  256. #define GLC_GET_VSYNC        9
  257. #define GLC_VSYNC_SLEEP        10
  258. #define GLC_FORCECIMAP        11
  259. #define GLC_TABLETSCALE        12
  260. #define GLC_NODESTALPHA        13
  261. #define GLC_NORELEASECONTEXT    14
  262. #define GLC_FLUSHMODE        15
  263. #define GLC_ILCMD        1008
  264. #define GLC_IL_READCOMPONENT    0
  265. #define GLC_IL_RECTZOOMOFF    1
  266. #define GLC_IL_CONVOLVE        2
  267. #define GLC_IL_LRECTPROC    3
  268. #define GLC_IL_HISTOGRAM    4
  269. #define GLC_IL_GETHISTOGRAM    5
  270. #define GLC_IL_MINMAX        6
  271. #define GLC_IL_GETMINMAX    7
  272. #define GLC_IL_PIXELMAP        8
  273. #define GLC_IL_PIXELTRANSFER    9
  274. #define GLC_IL_ILBUFFER        0xa
  275. #define GLC_IL_ILDRAW        0xb
  276. #define GLC_IL_SUBTEXLOAD    0xc
  277. #define GLC_IL_LEFTBUFFER    0xd
  278. #define GLC_IL_RIGHTBUFFER    0xe
  279. #define GLC_IL_STEREOBUFFER    0xf
  280. #define GLC_IL_MONOBUFFER    0x10
  281. #define GLC_IL_FBSUBTEXLOAD    0x11
  282. #define GLC_IL_ISTEXLOADED    0x12
  283. #define GLC_IL_BLENDCOLOR    0x13
  284.  
  285. /* value for GLC_MQUEUERATE which is compatible with 3.3 */
  286. #define GLC_COMPATRATE        15
  287. /* value for GLC_MQUEUERATE which causes maximum compression */
  288. #define GLC_CMPRESS        1
  289.  
  290. /* defines for curstype */
  291. #define C16X1            0
  292. #define C16X2            1
  293. #define C32X1            2
  294. #define C32X2            3
  295. #define CCROSS            4
  296.  
  297. /* defines for shademodel */
  298. #define FLAT            0    /* For compatibility */
  299. #define GOURAUD            1    /* For compatibility */
  300.  
  301. /* defines for logicop */
  302. #define LO_ZERO            0x0
  303. #define LO_AND            0x1
  304. #define LO_ANDR            0x2
  305. #define LO_SRC            0x3
  306. #define LO_ANDI            0x4
  307. #define LO_DST            0x5
  308. #define LO_XOR            0x6
  309. #define LO_OR            0x7
  310. #define LO_NOR            0x8
  311. #define LO_XNOR            0x9
  312. #define LO_NDST            0xa
  313. #define LO_ORR            0xb
  314. #define LO_NSRC            0xc
  315. #define LO_ORI            0xd
  316. #define LO_NAND            0xe
  317. #define LO_ONE            0xf
  318.  
  319. /* define for scrnselect */
  320. #define INFOCUSSCRN        -2
  321.  
  322. /* defines for stencil */
  323. #define ST_KEEP            0
  324. #define ST_ZERO            1
  325. #define ST_REPLACE        2
  326. #define ST_INCR            3
  327. #define ST_DECR            4
  328. #define ST_INVERT        5
  329. #define SF_NEVER        0
  330. #define SF_LESS            1
  331. #define SF_EQUAL        2
  332. #define SF_LEQUAL        3
  333. #define SF_GREATER        4
  334. #define SF_NOTEQUAL        5
  335. #define SF_GEQUAL        6
  336. #define SF_ALWAYS        7
  337.  
  338. /* defines for scrsubdivide */
  339. #define SS_OFF            0
  340. #define SS_DEPTH        1
  341.  
  342. /* defines for polymode */
  343. #define PYM_FILL        1
  344. #define PYM_POINT        2
  345. #define PYM_LINE        3
  346. #define PYM_HOLLOW        4
  347. #define PYM_LINE_FAST        5
  348.  
  349. /* defines for fogvertex */
  350. #define FG_OFF            0
  351. #define FG_ON            1
  352. #define FG_DEFINE        2
  353. #define FG_VTX_EXP        2 /* aka FG_DEFINE*/
  354. #define FG_VTX_LIN        3
  355. #define FG_PIX_EXP        4
  356. #define FG_PIX_LIN        5
  357. #define FG_VTX_EXP2        6 
  358. #define FG_PIX_EXP2        7
  359.  
  360. /* defines for pixmode */
  361. #define PM_SHIFT        0
  362. #define PM_EXPAND        1
  363. #define PM_C0            2
  364. #define PM_C1            3
  365. #define PM_ADD24        4
  366. #define PM_SIZE            5
  367. #define PM_OFFSET        6
  368. #define PM_STRIDE        7
  369. #define PM_TTOB            8
  370. #define PM_RTOL            9
  371. #define PM_ZDATA        10
  372. #define PM_WARP            11
  373. #define PM_RDX            12
  374. #define PM_RDY            13
  375. #define PM_CDX            14
  376. #define PM_CDY            15
  377. #define PM_XSTART        16
  378. #define PM_YSTART        17
  379. #define PM_VO1            1000    /* internal use only */
  380.  
  381. /* defines for VENICE float path pixels/texels */
  382. #define PM_INPUT_FORMAT        11
  383. #define PM_INPUT_TYPE        12
  384. #define PM_OUTPUT_FORMAT    13
  385. #define PM_OUTPUT_TYPE        14
  386. #define PM_ABGR            0
  387. #define PM_BGR            1
  388. #define PM_RGBA            2
  389. #define PM_RGB            3
  390. #define PM_LUMINANCE        4
  391. #define PM_LUMINANCEA        5
  392. #define PM_ALPHA        6
  393. #define PM_COLOR_INDEX        7
  394. #define PM_STENCIL_INDEX    8
  395. #define PM_DEPTH        9
  396. #define PM_RED            10
  397. #define PM_GREEN        11
  398. #define PM_BLUE            12
  399.  
  400.  
  401. #define PM_BITMAP        0
  402. #define PM_BYTE            1
  403. #define PM_UNSIGNED_BYTE    2
  404. #define PM_SHORT_12        3
  405. #define PM_UNSIGNED_SHORT_12    4
  406. #define PM_SHORT        5
  407. #define PM_UNSIGNED_SHORT    6
  408. #define PM_INT            7
  409. #define PM_UNSIGNED_INT        8
  410. #define PM_FLOAT        9
  411.  
  412. /* defines for convolve */
  413. #define CV_OFF            0
  414. #define CV_GENERAL        1
  415. #define CV_SEPARABLE        2
  416. #define CV_REDUCE        1
  417.  
  418. /* defines for pixelmap */
  419. #define MAP_I_TO_I        0
  420. #define MAP_I_TO_R        1
  421. #define MAP_I_TO_G        2
  422. #define MAP_I_TO_B        3
  423. #define MAP_I_TO_A        4
  424. #define MAP_R_TO_R        5
  425. #define MAP_G_TO_G        6
  426. #define MAP_B_TO_B        7
  427. #define MAP_A_TO_A        8
  428.  
  429. /* defines for pixeltransfer */
  430. #define PT_MAP_COLOR        0
  431. #define PT_MAP_DISABLE        0
  432. #define PT_MAP_CLAMP        1
  433. #define PT_MAP_ENABLE        2
  434.  
  435. #define PT_RED_SCALE        1
  436. #define PT_RED_BIAS        2
  437. #define PT_GREEN_SCALE        3
  438. #define PT_GREEN_BIAS        4
  439. #define PT_BLUE_SCALE        5
  440. #define PT_BLUE_BIAS        6
  441. #define PT_ALPHA_SCALE        7
  442. #define PT_ALPHA_BIAS        8
  443.  
  444. /* defines for nmode */
  445. #define NAUTO            0
  446. #define NNORMALIZE        1
  447.  
  448. /* defines for acbuf */
  449. #define AC_CLEAR                0
  450. #define AC_ACCUMULATE           1
  451. #define AC_CLEAR_ACCUMULATE     2
  452. #define AC_RETURN               3
  453. #define AC_MULT                 4
  454. #define AC_ADD                  5
  455.  
  456. /* defines for clipplane */
  457. #define CP_OFF                  0
  458. #define CP_ON                   1
  459. #define CP_DEFINE               2
  460.  
  461. /* defines for scrbox */
  462. #define SB_RESET                0
  463. #define SB_TRACK                1
  464. #define SB_HOLD                 2
  465.  
  466.  
  467. /* defines for readdisplay */
  468. #define RD_FREEZE        0x00000001
  469. #define RD_ALPHAONE        0x00000002
  470. #define RD_IGNORE_UNDERLAY    0x00000004
  471. #define RD_IGNORE_OVERLAY    0x00000008
  472. #define RD_IGNORE_PUP        0x00000010
  473. #define RD_OFFSCREEN        0x00000020
  474.  
  475. /* defines for getgconfig */
  476. #define GC_BITS_CMODE        0
  477. #define GC_BITS_RED        1
  478. #define GC_BITS_GREEN        2
  479. #define GC_BITS_BLUE        3
  480. #define GC_BITS_ALPHA        4
  481. #define GC_BITS_ZBUFFER        5
  482. #define GC_ZMIN            6
  483. #define GC_ZMAX            7
  484. #define GC_BITS_STENCIL        8
  485. #define GC_BITS_ACBUF        9
  486. #define GC_MS_SAMPLES        10
  487. #define GC_BITS_MS_ZBUFFER    11
  488. #define GC_MS_ZMIN        12
  489. #define GC_MS_ZMAX        13
  490. #define GC_BITS_MS_STENCIL    14
  491. #define GC_STEREO        15
  492. #define GC_DOUBLE        16
  493.  
  494.  
  495. /* 
  496.  * START defines for getgdesc 
  497.  */
  498.  
  499. #define GD_XPMAX        0
  500. #define GD_YPMAX        1
  501. #define GD_XMMAX        2
  502. #define GD_YMMAX        3
  503. #define GD_ZMIN            4
  504. #define GD_ZMAX            5
  505. #define GD_BITS_NORM_SNG_RED    6
  506. #define GD_BITS_NORM_SNG_GREEN    7
  507. #define GD_BITS_NORM_SNG_BLUE    8
  508. #define GD_BITS_NORM_DBL_RED    9
  509. #define GD_BITS_NORM_DBL_GREEN    10
  510. #define GD_BITS_NORM_DBL_BLUE    11
  511. #define GD_BITS_NORM_SNG_CMODE    12
  512. #define GD_BITS_NORM_DBL_CMODE    13
  513. #define GD_BITS_NORM_SNG_MMAP    14
  514. #define GD_BITS_NORM_DBL_MMAP    15
  515. #define GD_BITS_NORM_ZBUFFER    16
  516. #define GD_BITS_OVER_SNG_CMODE    17
  517. #define GD_BITS_UNDR_SNG_CMODE    18
  518. #define GD_BITS_PUP_SNG_CMODE    19
  519. #define GD_BITS_NORM_SNG_ALPHA    21 
  520. #define GD_BITS_NORM_DBL_ALPHA    22
  521. #define GD_BITS_CURSOR        23
  522. #define GD_OVERUNDER_SHARED    24
  523. #define GD_BLEND        25
  524. #define GD_CIFRACT        26
  525. #define GD_CROSSHAIR_CINDEX    27
  526. #define GD_DITHER        28
  527. #define GD_LINESMOOTH_CMODE    30
  528. #define GD_LINESMOOTH_RGB    31
  529. #define GD_LOGICOP        33
  530. #define GD_NSCRNS        35
  531. #define GD_NURBS_ORDER        36
  532. #define GD_NBLINKS        37
  533. #define GD_NVERTEX_POLY        39
  534. #define GD_PATSIZE_64        40
  535. #define GD_PNTSMOOTH_CMODE    41
  536. #define GD_PNTSMOOTH_RGB    42
  537. #define GD_PUP_TO_OVERUNDER    43
  538. #define GD_READSOURCE        44
  539. #define GD_READSOURCE_ZBUFFER    48
  540. #define GD_STEREO        50
  541. #define GD_SUBPIXEL_LINE    51
  542. #define GD_SUBPIXEL_PNT        52
  543. #define GD_SUBPIXEL_POLY    53
  544. #define GD_TRIMCURVE_ORDER    54
  545. #define GD_WSYS            55
  546. #define GD_ZDRAW_GEOM        57
  547. #define GD_ZDRAW_PIXELS        58
  548. #define GD_SCRNTYPE        61
  549. #define GD_TEXTPORT        62
  550. #define GD_NMMAPS        63
  551. #define GD_FRAMEGRABBER        64
  552. #define GD_TIMERHZ        66
  553. #define GD_DBBOX        67
  554. #define GD_AFUNCTION        68
  555. #define GD_ALPHA_OVERUNDER    69
  556. #define GD_BITS_ACBUF        70
  557. #define GD_BITS_ACBUF_HW    71
  558. #define GD_BITS_STENCIL        72
  559. #define GD_CLIPPLANES        73
  560. #define GD_FOGVERTEX        74
  561. #define GD_LIGHTING_TWOSIDE    76
  562. #define GD_POLYMODE        77
  563. #define GD_POLYSMOOTH        78
  564. #define GD_SCRBOX        79
  565. #define GD_TEXTURE        80
  566. #define GD_FOGPIXEL        81
  567. #define GD_TEXTURE_PERSP    82
  568. #define GD_MUXPIPES        83
  569. #define GD_MULTISAMPLE        84
  570. #define GD_TEXTURE_3D        85
  571. #define GD_TEXTURE_LUT        86
  572. #define GD_TEXTURE_SHARP    87
  573. #define GD_TEXTURE_DETAIL    88
  574. #define GD_STEREO_IN_WINDOW    89
  575. #define GD_BLENDCOLOR        90
  576. #define GD_LIGHTING_SPOTLIGHT    91
  577. #define GD_LIGHTING_ATT2    92
  578. #define GD_AFUNCTION_MODES    93
  579. #define GD_TEXTURE_MEMORY_SIZE    94
  580. #define GD_IS_IGLOO        95
  581. #define GD_IS_NATIVE        96
  582.  
  583.  
  584. /* return value for inquiries when there is no limit */
  585. #define GD_NOLIMIT        -2
  586.  
  587. /* return values for GD_WSYS */
  588. #define GD_WSYS_NONE        0
  589. #define GD_WSYS_4S        1
  590.  
  591. /* return values for GD_SCRNTYPE */
  592. #define GD_SCRNTYPE_WM        0
  593. #define GD_SCRNTYPE_NOWM    1
  594.  
  595. /* 
  596.  * END defines for getgdesc 
  597.  */
  598.  
  599.  
  600. /* 
  601.  * START NURBS interface definitions 
  602.  */
  603.  
  604. /* NURBS Rendering Properties */
  605. #define N_PIXEL_TOLERANCE     1
  606. #define N_CULLING        2
  607. #define N_DISPLAY        3
  608. #define N_ERRORCHECKING        4
  609. #define N_SUBDIVISIONS        5
  610. #define N_S_STEPS        6
  611. #define N_T_STEPS        7
  612. #define N_TILES            8
  613. #define N_TMP1            9
  614. #define N_TMP2            10
  615. #define N_TMP3            11
  616. #define N_TMP4            12
  617. #define N_TMP5            13
  618. #define N_TMP6            14
  619.  
  620. #define N_FILL            1.0
  621. #define N_OUTLINE_POLY        2.0
  622. #define N_OUTLINE_PATCH        5.0
  623. #define N_ISOLINE_S        12.0
  624.  
  625. /*---------------------------------------------------------------------------
  626.  * FLAGS FOR NURBS SURFACES AND CURVES            
  627.  * WARNING: Any changes to these flags should be checked against the 
  628.  * decoding macros in nurbs.h.
  629.  *
  630.  * Bit: 876 5432 10 
  631.  *     |ttt|nnnn|rr|   :  rr - 2 bits = 1 if rational coordinate exists
  632.  *               : nnn - 4 bits for number of coordinates
  633.  *               : ttt - 3 bits for type of data (color, position, etc.)
  634.  *    
  635.  *
  636.  * NURBS data type
  637.  * N_T_ST         0     parametric space data
  638.  * N_T_XYZ        1     model space data
  639.  * N_T_TEX        2     texture coordinate data
  640.  * N_T_RGBA        3     color data
  641.  *
  642.  * Number of coordinates per datum
  643.  * N_COORD2         2     2 coords
  644.  * N_COORD3        3     3 coords
  645.  * N_COORD4        4     4 coords
  646.  * N_COORD5        5     5 coords
  647.  *
  648.  * rational or non-rational data and position in memory 
  649.  * N_NONRATIONAL    0     non-rational data
  650.  * N_RATIONAL        1     rational data with rat coord after rest
  651.  *
  652.  * N_MKFLAG(t,n,r) ((t<<6) | (n<<2) | r)
  653.  *    
  654.  *---------------------------------------------------------------------------
  655.  */
  656. #define N_ST      0x8    /* N_MKFLAG( N_T_ST,  N_COORD2, N_NONRATIONAL ) */
  657. #define N_STW      0xd    /* N_MKFLAG( N_T_ST,  N_COORD3, N_RATIONAL )     */
  658. #define N_XYZ     0x4c    /* N_MKFLAG( N_T_XYZ, N_COORD3, N_NONRATIONAL ) */
  659. #define N_XYZW     0x51    /* N_MKFLAG( N_T_XYZ, N_COORD4, N_RATIONAL )     */
  660. #define N_TEX     0x88    /* N_MKFLAG( N_T_TEX, N_COORD2, N_NONRATIONAL ) */
  661. #define N_TEXW     0x8d    /* N_MKFLAG( N_T_TEX, N_COORD3, N_RATIONAL ) */
  662. #define N_RGBA     0xd0    /* N_MKFLAG( N_T_RGBA, N_COORD4, N_NONRATIONAL ) */
  663. #define N_RGBAW     0xd5    /* N_MKFLAG( N_T_RGBA, N_COORD5, N_RATIONAL ) */
  664.  
  665. /* New versions of above constants */
  666.  
  667. #define N_P2D     0x8    /* N_MKFLAG( N_T_ST,  N_COORD2, N_NONRATIONAL ) */
  668. #define N_P2DR     0xd    /* N_MKFLAG( N_T_ST,  N_COORD3, N_RATIONAL )     */
  669. #define N_V3D     0x4c    /* N_MKFLAG( N_T_XYZ, N_COORD3, N_NONRATIONAL ) */
  670. #define N_V3DR     0x51    /* N_MKFLAG( N_T_XYZ, N_COORD4, N_RATIONAL )     */
  671. #define N_T2D     0x88    /* N_MKFLAG( N_T_TEX, N_COORD2, N_NONRATIONAL ) */
  672. #define N_T2DR     0x8d    /* N_MKFLAG( N_T_TEX, N_COORD3, N_RATIONAL ) */
  673. #define N_C4D     0xd0    /* N_MKFLAG( N_T_RGBA, N_COORD4, N_NONRATIONAL ) */
  674. #define N_C4DR     0xd5    /* N_MKFLAG( N_T_RGBA, N_COORD5, N_RATIONAL ) */
  675.  
  676. /* 
  677.  * END NURBS interface definitions 
  678.  */
  679.  
  680.  
  681. /* 
  682.  * START lighting model defines 
  683.  */
  684.  
  685. #define LMNULL            0.0
  686.  
  687. /* MATRIX modes    */
  688. #define MSINGLE            0
  689. #define MPROJECTION        1
  690. #define MVIEWING        2
  691. #define MTEXTURE        3
  692.  
  693. /* LIGHT constants */
  694. #define MAXLIGHTS        8
  695. #define MAXRESTRICTIONS        4
  696.  
  697. /* MATERIAL properties */
  698. #define DEFMATERIAL        0
  699. #define EMISSION        1
  700. #define AMBIENT            2
  701. #define DIFFUSE            3
  702. #define SPECULAR        4
  703. #define SHININESS        5
  704. #define COLORINDEXES        6
  705. #define ALPHA            7
  706.  
  707. /* LIGHT properties */
  708. #define DEFLIGHT        100
  709. #define LCOLOR            101
  710. #define POSITION        102
  711. #define SPOTDIRECTION        103
  712. #define SPOTLIGHT        104
  713.  
  714.  
  715. /* LIGHTINGMODEL properties */
  716. #define DEFLMODEL        200
  717. #define LOCALVIEWER        201
  718. #define ATTENUATION        202
  719. #define ATTENUATION2        203
  720. #define TWOSIDE            204
  721.  
  722.  
  723. /* TARGET constants */
  724. #define MATERIAL        1000
  725. #define BACKMATERIAL        1001
  726. #define LIGHT0            1100
  727. #define LIGHT1            1101
  728. #define LIGHT2            1102
  729. #define LIGHT3            1103
  730. #define LIGHT4            1104
  731. #define LIGHT5            1105
  732. #define LIGHT6            1106
  733. #define LIGHT7            1107
  734. #define LMODEL            1200
  735.  
  736. /* lmcolor modes */
  737. #define LMC_COLOR        0
  738. #define LMC_EMISSION        1
  739. #define LMC_AMBIENT        2
  740. #define LMC_DIFFUSE        3
  741. #define LMC_SPECULAR        4
  742. #define LMC_AD            5
  743. #define LMC_NULL        6
  744.  
  745. /*
  746.  * END lighting model defines 
  747.  */
  748.  
  749.  
  750. /* 
  751.  * START texturing defines 
  752.  */
  753.  
  754. /* texdef param token values */
  755. #define TX_MINFILTER        0x100
  756. #define TX_MAGFILTER        0x200
  757. #define TX_MAGFILTER_COLOR      0xa00
  758. #define TX_MAGFILTER_ALPHA      0xb00
  759. #define TX_WRAP            0x300
  760. #define TX_WRAP_S        0x310
  761. #define TX_WRAP_T        0x320
  762. #define TX_WRAP_R        0x330
  763. #define TX_TILE            0x400
  764. #define    TX_BORDER        0x500
  765. #define TX_DETAIL               0xe00
  766. #define TX_FAST_DEFINE        0x0f00
  767. #define TX_NOCOPY                               TX_FAST_DEFINE /* obsolete */
  768. #define TX_FRAMEBUFFER_SRC                      0x1000 /* obsolete */
  769. #define TX_SUBTEXLOAD                           0x2000 /* obsolete */
  770. #define TX_FORMATTED_16bit_64x64    0x2000
  771. #define TX_FORMATTED_ABGR_8_128x128    0x2010
  772. #define TX_CONTROL_POINT        0xc00
  773. #define TX_CONTROL_CLAMP        0xd00
  774. #define TX_NULL            0x000
  775.  
  776. /* texture external formats */
  777. #define TX_EXTERNAL_FORMAT      0x700
  778. #define TX_PACK_8               0x710   /* just like STAPUFT 4.0 */
  779. #define TX_PACK_16              0x720   /* */
  780. #define TX_NOPACK_12        0x730   /* 12 bits in 12 lsb bits of short */
  781. #define TX_PIXMODE        0x3000
  782. #define    TX_BICUBIC_FILTER    0x4000    /* user bicubic kernel parameters */
  783.  
  784. #define TX_INTERNAL_FORMAT      0x600
  785. /* choices for TX_INTERNAL_FORMAT */
  786. #define TX_I_12                 0x610   /* 1-comp                      full    speed */
  787. #define TX_I_12A_4              0x610   /*        2-comp               full    speed */
  788. #define TX_I_8                  0x620   /* 1-comp                      full    speed */
  789. #define TX_IA_8                 0x620   /*        2-comp               full    speed */
  790. #define TX_RGB_5                0x630   /*               3-comp        full    speed */
  791. #define TX_RGBA_4               0x640   /*                      4-comp full    speed */
  792. #define TX_IA_12                0x650   /*        2-comp               half    speed */
  793. #define TX_RGBA_8               0x660   /*                      4-comp half    speed */
  794. #define TX_RGB_8                0x660   /*               3-comp        half    speed */
  795. #define TX_RGB_12               0x680   /*               3-comp        third   speed */
  796. #define TX_RGBA_12              0x670   /*                      4-comp quarter speed */
  797. #define TX_I_16                 0x690    /* should only be used in SHADOW mode */
  798.  
  799.  
  800. #define TX_MIPMAP_FILTER_KERNEL 0x900   /* seperable 8x8x8 filter kernel */
  801.  
  802. /* texture filter choices */
  803. #define TX_POINT        0x110
  804. #define TX_BILINEAR        0x220
  805. #define TX_MIPMAP        0x120
  806. #define TX_MIPMAP_POINT        0x121
  807. #define TX_MIPMAP_LINEAR    0x122
  808. #define TX_MIPMAP_BILINEAR    0x123
  809. #define TX_MIPMAP_TRILINEAR    0x124
  810. #define TX_BICUBIC                      0x230
  811. #define TX_SHARPEN                      0x240
  812. #define TX_MODULATE_DETAIL              0x250
  813. #define TX_ADD_DETAIL                   0x260
  814. #define TX_TRILINEAR                    0x270
  815. #define TX_MIPMAP_QUADLINEAR            0x280
  816. #define TX_BICUBIC_GEQUAL               0x290
  817. #define TX_BICUBIC_LEQUAL               0x2a0
  818. #define TX_BILINEAR_GEQUAL              0x2b0
  819. #define TX_BILINEAR_LEQUAL              0x2c0
  820.  
  821.  
  822. /* texture wrapping access choices */
  823. #define TX_REPEAT        0x301
  824. #define TX_CLAMP        0x302
  825. #define TX_SELECT        0x303
  826.  
  827. /* texture targets */
  828. #define TX_TEXTURE_0        0
  829. #define TX_TEXTURE_DETAIL       1 /* This binds a texture to the DETAIL texture resource */
  830. #define TX_TEXTURE_IDLE        2
  831.  
  832. /* texture environment definitions */
  833. #define TV_MODULATE        0x101
  834. #define TV_BLEND        0x102
  835. #define TV_DECAL        0x103
  836. #define TV_COLOR        0x200
  837. #define TV_SHADOW               0x104
  838. #define TV_ALPHA                0x105
  839. #define TV_COMPONENT_SELECT     0x300
  840. #define TV_I_GETS_R             0x310
  841. #define TV_I_GETS_G             0x320
  842. #define TV_I_GETS_B             0x330
  843. #define TV_I_GETS_A             0x340
  844. #define TV_IA_GETS_RG           0x350
  845. #define TV_IA_GETS_BA           0x360
  846. #define TV_I_GETS_I             0x370
  847. #define TV_NULL            0x000
  848.  
  849. /* texture lookup table definitions */
  850. #define TL_NULL                 0x0
  851. #define TL_TLUT_0        0
  852.  
  853. /* texture environment targets */
  854. #define TV_ENV0         0
  855.  
  856. /* defines for texgen */
  857. #define TX_S            0
  858. #define TX_T            1
  859. #define TX_R            2
  860. #define TX_Q            3
  861. #define TG_OFF            0
  862. #define TG_ON            1
  863. #define TG_CONTOUR        2
  864. #define TG_LINEAR        3
  865. #define TG_SPHEREMAP        4
  866. #define TG_REFRACTMAP        5    /* not yet approved! */
  867.  
  868. /*
  869.  * END texturing defines 
  870.  */
  871.  
  872. /* 
  873.  * START multi-byte character types for lcharstr and lstrwidth
  874.  */
  875.  
  876. #define STR_B    0x000
  877. #define STR_2B    0x001
  878. #define STR_3B    0x010
  879. #define STR_4B    0x011
  880. #define STR_16    0x100
  881. #define STR_32    0x101
  882.  
  883. /* 
  884.  * END mbcharstr defines
  885.  */
  886.  
  887. /* 
  888.  * START Distributed Graphics Library defines 
  889.  */
  890.  
  891. #define DGLSINK            0    /* sink connection    */
  892. #define DGLLOCAL        1    /* local connection    */
  893. #define DGLTSOCKET        2    /* tcp socket connection*/
  894. #define DGL4DDN            3    /* 4DDN (DECnet)    */
  895.  
  896. /* 
  897.  * END Distributed Graphics Library defines 
  898.  */
  899.  
  900.  
  901. /* 
  902.  * START obsolete defines - included for backwards compatibility 
  903.  */
  904.  
  905. #define GLDEF            __GL_GL_H__
  906.  
  907. #define PUP_CURSOR        PUP_COLOR
  908.  
  909. #define FATAL           1       /* exit from program after printing message */
  910. #define WARNING         2       /* print message and continue */
  911. #define ASK_CONT        3       /* ask if program should continue */
  912. #define ASK_RESTART     4       /* ask if program should be restarted */
  913.  
  914. /* high-resolution monitor */
  915. #define XMAXSCREEN        1279
  916. #define YMAXSCREEN        1023
  917.  
  918. /* medium-resolution monitor */
  919. #define XMAXMEDIUM        1023    
  920. #define YMAXMEDIUM        767
  921.  
  922. /* RS-170 */
  923. #define XMAX170            645    
  924. #define YMAX170            484
  925.  
  926. /* PAL */
  927. #define XMAXPAL            779    
  928. #define YMAXPAL            574
  929.  
  930. /* 
  931.  * END obsolete defines
  932.  */
  933.  
  934.  
  935. /* typedefs */
  936.  
  937. typedef unsigned char Byte;
  938. typedef long Boolean;
  939. typedef char *String;
  940. typedef void *Lstring;
  941.  
  942. typedef short Angle;
  943. typedef short Screencoord;
  944. typedef short Scoord;
  945. typedef long Icoord;
  946. typedef float Coord;
  947. typedef float Matrix[4][4];
  948.  
  949. typedef unsigned short Colorindex;
  950. typedef unsigned char RGBvalue;
  951.  
  952. typedef unsigned short Device;
  953.  
  954. typedef unsigned short Pattern16[PATTERN_16_SIZE];
  955. typedef unsigned short Pattern32[PATTERN_32_SIZE];
  956. typedef unsigned short Pattern64[PATTERN_64_SIZE];
  957.  
  958. typedef unsigned short Linestyle;
  959.  
  960. typedef struct {
  961.     unsigned long value;
  962.     unsigned long offset;
  963.     short w,h;
  964.     short xoff,yoff;
  965.     short xmove, ymove;
  966. } Lfontchar;
  967.  
  968. typedef struct {
  969.     unsigned short offset;
  970.     Byte w,h;
  971. #ifdef _LANGUAGE_C_PLUS_PLUS
  972.     char xoff,yoff;
  973. #else
  974.     signed char xoff,yoff;
  975. #endif
  976.     short width;
  977. } Fontchar;
  978.  
  979. typedef long Object;
  980. typedef long Tag;
  981. typedef long Offset;
  982.  
  983. typedef void (*__PFV_)();    /* C++ can't handle function ptr prototype */
  984.  
  985. typedef struct {
  986.     int buffer;
  987.     int mode;
  988.     int arg;
  989. } GLXconfig;
  990.  
  991. /* obsolete typedefs */
  992. #ifndef X_H
  993. typedef unsigned short Cursor[16];    /* a C16X1 cursor */
  994. #endif
  995.  
  996. extern GLXconfig *      GLXgetconfig( void *, long, GLXconfig * );
  997. extern void     acbuf( long, float );
  998. extern void     acsize( long );
  999. extern void     addtopup( long, String, ... );
  1000. extern void     afunction( long, long );
  1001. extern void     arc( Coord, Coord, Coord, Angle, Angle );
  1002. extern void     arcf( Coord, Coord, Coord, Angle, Angle );
  1003. extern void     arcfi( Icoord, Icoord, Icoord, Angle, Angle );
  1004. extern void     arcfs( Scoord, Scoord, Scoord, Angle, Angle );
  1005. extern void     arci( Icoord, Icoord, Icoord, Angle, Angle );
  1006. extern void     arcs( Scoord, Scoord, Scoord, Angle, Angle );
  1007. extern void     attachcursor( Device, Device );
  1008. extern void     backbuffer( Boolean );
  1009. extern void     backface( Boolean );
  1010. extern void     bbox2( Screencoord, Screencoord, Coord, Coord, Coord, Coord );
  1011. extern void     bbox2i( Screencoord, Screencoord, Icoord, Icoord, Icoord, Icoord );
  1012. extern void     bbox2s( Screencoord, Screencoord, Scoord, Scoord, Scoord, Scoord );
  1013. extern void     bgnclosedline( void );
  1014. extern void     bgncurve( void );
  1015. extern void     bgnline( void );
  1016. extern void     bgnpoint( void );
  1017. extern void     bgnpolygon( void );
  1018. extern void     bgnqstrip( void );
  1019. extern void     bgnsurface( void );
  1020. extern void     bgntmesh( void );
  1021. extern void     bgntrim( void );
  1022. extern void     blankscreen( Boolean );
  1023. extern void     blanktime( long );
  1024. extern void     blendcolor( float, float, float, float );
  1025. extern void     blendfunction( long, long );
  1026. extern void     blink( short, Colorindex, short, short, short );
  1027. extern long     blkqread( short[], short );
  1028. extern void     c3f( const float[3] );
  1029. extern void     c3i( const long[3] );
  1030. extern void     c3s( const short[3] );
  1031. extern void     c4f( const float[4] );
  1032. extern void     c4i( const long[4] );
  1033. extern void     c4s( const short[4] );
  1034. extern void     callfunc( __PFV_, long, ... );          /* not recommended */
  1035. extern void     callobj( Object );
  1036. extern void     charstr( String );
  1037. extern void     chunksize( long );
  1038. extern void     circ( Coord, Coord, Coord );
  1039. extern void     circf( Coord, Coord, Coord );
  1040. extern void     circfi( Icoord, Icoord, Icoord );
  1041. extern void     circfs( Scoord, Scoord, Scoord );
  1042. extern void     circi( Icoord, Icoord, Icoord );
  1043. extern void     circs( Scoord, Scoord, Scoord );
  1044. extern void     clear( void );
  1045. extern void     clearhitcode( void );                   /* not recommended */
  1046. extern void     clipplane( long, long, const float[] );
  1047. extern void     clkoff( void );
  1048. extern void     clkon( void );
  1049. extern void     closeobj( void );
  1050. extern void     cmode( void );
  1051. extern void     cmov( Coord, Coord, Coord );
  1052. extern void     cmov2( Coord, Coord );
  1053. extern void     cmov2i( Icoord, Icoord );
  1054. extern void     cmov2s( Scoord, Scoord );
  1055. extern void     cmovi( Icoord, Icoord, Icoord );
  1056. extern void     cmovs( Scoord, Scoord, Scoord );
  1057. extern void     color( Colorindex );
  1058. extern void     colorf( float );
  1059. extern void     compactify( Object );
  1060. extern void     concave( Boolean );
  1061. extern void     convolve( long, long, long, long, const float[], float );
  1062. extern void     cpack( unsigned long );
  1063. extern void     crv( const Coord[4][3] );
  1064. extern void     crvn( long, const Coord[][3] );
  1065. extern void     curorigin( short, short, short );
  1066. extern void     cursoff( void );
  1067. extern void     curson( void );
  1068. extern void     curstype( long );
  1069. extern void     curvebasis( short );
  1070. extern void     curveit( short );
  1071. extern void     curveprecision( short );
  1072. extern void     cyclemap( short, short, short );
  1073. extern void     czclear( unsigned long, long );
  1074. extern void     dbtext( char[8] );
  1075. extern void     defbasis( short, const Matrix );
  1076. extern void     defcursor( short, const unsigned short[128] );
  1077. extern void     deflfont( short, short, const Lfontchar[], long, const unsigned short[] );
  1078. extern void     deflinestyle( short, Linestyle );
  1079. extern void     defpattern( short, short, const unsigned short[] );
  1080. extern long     defpup( String, ... );
  1081. extern void     defrasterfont( short, short, short, const Fontchar[], short, const unsigned short[] );
  1082. extern void     delobj( Object );
  1083. extern void     deltag( Tag );
  1084. extern void     depthcue( Boolean );
  1085. extern void     dglclose( long );
  1086. extern long     dglopen( String, long );
  1087. extern void     displacepolygon( float );
  1088. extern void     dither( long );
  1089. extern long     dopup( long );
  1090. extern void     doublebuffer( void );
  1091. extern void     draw( Coord, Coord, Coord );
  1092. extern void     draw2( Coord, Coord );
  1093. extern void     draw2i( Icoord, Icoord );
  1094. extern void     draw2s( Scoord, Scoord );
  1095. extern void     drawi( Icoord, Icoord, Icoord );
  1096. extern void     drawmode( long );
  1097. extern void     draws( Scoord, Scoord, Scoord );
  1098. extern void     editobj( Object );
  1099. extern void     endclosedline( void );
  1100. extern void     endcurve( void );
  1101. extern long     endfeedback( void * );
  1102. extern void     endfullscrn( void );
  1103. extern void     endline( void );
  1104. extern long     endpick( short[] );
  1105. extern void     endpoint( void );
  1106. extern void     endpolygon( void );
  1107. extern void     endpupmode( void );                     /* obsolete */
  1108. extern void     endqstrip( void );
  1109. extern long     endselect( short[] );
  1110. extern void     endsurface( void );
  1111. extern void     endtmesh( void );
  1112. extern void     endtrim( void );
  1113. extern void     fbsubtexload( long, long, long, long, float, float, float, float, unsigned long );
  1114. extern void     feedback( void *, long );
  1115. extern void     finish( void );
  1116. extern void     fogvertex( long, const float[32] );
  1117. extern void     font( short );
  1118. extern void     foreground( void );
  1119. extern void     freepup( long );
  1120. extern void     frontbuffer( Boolean );
  1121. extern void     frontface( Boolean );
  1122. extern void     fudge( long, long );
  1123. extern void     fullscrn( void );
  1124. extern void     gammaramp( const short[256], const short[256], const short[256] );
  1125. extern void     gbegin( void );                         /* not recommended */
  1126. extern void     gconfig( void );
  1127. extern Object   genobj( void );
  1128. extern Tag      gentag( void );
  1129. extern long     getbackface( void );
  1130. extern long     getbuffer( void );
  1131. extern Boolean  getbutton( Device );
  1132. extern Boolean  getcmmode( void );
  1133. extern long     getcolor( void );
  1134. extern void     getcpos( short *, short * );
  1135. extern void     getcursor( short *, Colorindex *, Colorindex *, Boolean * );
  1136. extern Boolean  getdcm( void );
  1137. extern void     getdepth( Screencoord *, Screencoord * ); /* obsolete */
  1138. extern long     getdescender( void );
  1139. extern void     getdev( long, const Device[], short[] );
  1140. extern long     getdisplaymode( void );
  1141. extern long     getdrawmode( void );
  1142. extern long     getfont( void );
  1143. extern long     getgconfig( long );
  1144. extern long     getgdesc( long );
  1145. extern void     getgpos( Coord *, Coord *, Coord *, Coord * );
  1146. extern long     getheight( void );
  1147. extern void     gethgram( unsigned long[16384] );
  1148. extern long     gethitcode( void );                     /* not recommended */
  1149. extern Boolean  getlsbackup( void );                    /* not recommended */
  1150. extern long     getlsrepeat( void );
  1151. extern long     getlstyle( void );
  1152. extern long     getlwidth( void );
  1153. extern long     getmap( void );
  1154. extern void     getmatrix( Matrix );
  1155. extern void     getmcolor( Colorindex, short *, short *, short * );
  1156. extern void     getminmax( float[8] );
  1157. extern long     getmmode( void );
  1158. extern long     getmonitor( void );
  1159. extern Boolean  getmultisample( void );
  1160. extern void     getnurbsproperty( long, float * );
  1161. extern Object   getopenobj( void );
  1162. extern void     getorigin( long *, long * );
  1163. extern long     getothermonitor( void );                /* obsolete */
  1164. extern long     getpattern( void );
  1165. extern long     getplanes( void );
  1166. extern void     getport( String );                      /* obsolete */
  1167. extern Boolean  getresetls( void );                     /* not recommended */
  1168. extern void     getscrbox( long *, long *, long *, long * );
  1169. extern void     getscrmask( Screencoord *, Screencoord *, Screencoord *, Screencoord * );
  1170. extern long     getshade( void );                       /* obsolete */
  1171. extern void     getsize( long *, long * );
  1172. extern long     getsm( void );
  1173. extern long     getvaluator( Device );
  1174. extern long     getvideo( long );
  1175. extern void     getviewport( Screencoord *, Screencoord *, Screencoord *, Screencoord * );
  1176. extern long     getwritemask( void );
  1177. extern long     getwscrn( void );
  1178. extern Boolean  getzbuffer( void );
  1179. extern void     gexit( void );
  1180. extern void     gflush( void );
  1181. extern void     ginit( void );                          /* not recommended */
  1182. extern void     glcompat( long, long );
  1183. extern long     GLXlink( void *, GLXconfig * );
  1184. extern long     GLXunlink( void *, unsigned long );
  1185. extern long     GLXwinset( void *, unsigned long );
  1186. extern void     greset( void );                         /* not recommended */
  1187. extern void     gRGBcolor( short *, short *, short * );
  1188. extern void     gRGBcursor( short *, short *, short *, short *, short *, short *, short *, Boolean * ); /* obsolete */
  1189. extern void     gRGBmask( short *, short *, short * );
  1190. extern void     gselect( short[], long );
  1191. extern void     gsync( void );
  1192. extern long     gversion( char[12] );
  1193. extern void     hgram( unsigned long, unsigned long );
  1194. extern void     iconsize( long, long );
  1195. extern void     icontitle( String );
  1196. extern long     ilbuffer( unsigned long );
  1197. extern void     ildraw( unsigned long );
  1198. extern void     imakebackground( void );
  1199. extern void     initnames( void );
  1200. extern Boolean  ismex( void );                          /* obsolete */
  1201. extern Boolean  isobj( Object );
  1202. extern Boolean  isqueued( Device );
  1203. extern Boolean  istag( Tag );
  1204. extern long     istexloaded( long, long );
  1205. extern void     keepaspect( long, long );
  1206. extern void     lampoff( Byte );                        /* not recommended */
  1207. extern void     lampon( Byte );                         /* not recommended */
  1208. extern void     lcharstr( long, Lstring );
  1209. extern void     leftbuffer( Boolean );
  1210. extern void     linesmooth( unsigned long );
  1211. extern void     linewidth( short );
  1212. extern void     linewidthf( float );
  1213. extern void     lmbind( short, short );
  1214. extern void     lmcolor( long );
  1215. extern void     lmdef( short, short, short, const float[] );
  1216. extern void     loadmatrix( const Matrix );
  1217. extern void     loadname( short );
  1218. extern void     logicop( long );
  1219. extern void     lookat( Coord, Coord, Coord, Coord, Coord, Coord, Angle );
  1220. extern long     lrectread( Screencoord, Screencoord, Screencoord, Screencoord, unsigned long[] );
  1221. extern void     lrectwrite( Screencoord, Screencoord, Screencoord, Screencoord, const unsigned long[] );
  1222. extern void     lRGBrange( short, short, short, short, short, short, long, long );
  1223. extern void     lsbackup( Boolean );                    /* not recommended */
  1224. extern void     lsetdepth( long, long );
  1225. extern void     lshaderange( Colorindex, Colorindex, long, long );
  1226. extern void     lsrepeat( long );
  1227. extern long     lstrwidth( long, Lstring );
  1228. extern void     makeobj( Object );
  1229. extern void     maketag( Tag );
  1230. extern void     mapcolor( Colorindex, short, short, short );
  1231. extern void     mapw( Object, Screencoord, Screencoord, Coord *, Coord *, Coord *, Coord *, Coord *, Coord * );
  1232. extern void     mapw2( Object, Screencoord, Screencoord, Coord *, Coord * );
  1233. extern void     maxsize( long, long );
  1234. extern void     minmax( unsigned long, unsigned long );
  1235. extern void     minsize( long, long );
  1236. extern void     mmode( short );
  1237. extern void     monobuffer( void );
  1238. extern void     move( Coord, Coord, Coord );
  1239. extern void     move2( Coord, Coord );
  1240. extern void     move2i( Icoord, Icoord );
  1241. extern void     move2s( Scoord, Scoord );
  1242. extern void     movei( Icoord, Icoord, Icoord );
  1243. extern void     moves( Scoord, Scoord, Scoord );
  1244. extern void     msalpha( long );
  1245. extern void     msmask( float, Boolean );
  1246. extern void     mspattern( long );
  1247. extern void     mssample( long );
  1248. extern void     mssize( long, long, long );
  1249. extern void     mswapbuffers( long );
  1250. extern void     multimap( void );
  1251. extern void     multisample( Boolean );
  1252. extern void     multmatrix( const Matrix );
  1253. extern void     n3f( const float[3] );
  1254. extern long     newpup( void );
  1255. extern void     newtag( Tag, Tag, Offset );
  1256. extern void     nmode( long );
  1257. extern void     noborder( void );
  1258. extern void     noise( Device, short );
  1259. extern void     noport( void );
  1260. extern void     normal( const Coord[3] );               /* obsolete */
  1261. extern void     nurbscurve( long, const double[], long, const double[], long, long );
  1262. extern void     nurbssurface( long, const double[], long, const double[], long, long, const double[], long, long, long );
  1263. extern void     objdelete( Tag, Tag );
  1264. extern void     objinsert( Tag );
  1265. extern void     objreplace( Tag );
  1266. extern void     onemap( void );
  1267. extern void     ortho( Coord, Coord, Coord, Coord, Coord, Coord );
  1268. extern void     ortho2( Coord, Coord, Coord, Coord );
  1269. extern void     overlay( long );
  1270. extern void     pagecolor( Colorindex );                /* not recommended */
  1271. extern void     passthrough( short );
  1272. extern void     patch( const Matrix, const Matrix, const Matrix );
  1273. extern void     patchbasis( long, long );
  1274. extern void     patchcurves( long, long );
  1275. extern void     patchprecision( long, long );
  1276. extern void     pclos( void );
  1277. extern void     pdr( Coord, Coord, Coord );
  1278. extern void     pdr2( Coord, Coord );
  1279. extern void     pdr2i( Icoord, Icoord );
  1280. extern void     pdr2s( Scoord, Scoord );
  1281. extern void     pdri( Icoord, Icoord, Icoord );
  1282. extern void     pdrs( Scoord, Scoord, Scoord );
  1283. extern void     perspective( Angle, float, Coord, Coord );
  1284. extern void     pick( short[], long );
  1285. extern void     picksize( short, short );
  1286. extern void     pixelmap( long, long, unsigned short[16384] );
  1287. extern void     pixeltransfer( long, float );
  1288. extern void     pixmode( long, long );
  1289. extern void     pixmodef( long, float );
  1290. extern void     pmv( Coord, Coord, Coord );
  1291. extern void     pmv2( Coord, Coord );
  1292. extern void     pmv2i( Icoord, Icoord );
  1293. extern void     pmv2s( Scoord, Scoord );
  1294. extern void     pmvi( Icoord, Icoord, Icoord );
  1295. extern void     pmvs( Scoord, Scoord, Scoord );
  1296. extern void     pnt( Coord, Coord, Coord );
  1297. extern void     pnt2( Coord, Coord );
  1298. extern void     pnt2i( Icoord, Icoord );
  1299. extern void     pnt2s( Scoord, Scoord );
  1300. extern void     pnti( Icoord, Icoord, Icoord );
  1301. extern void     pnts( Scoord, Scoord, Scoord );
  1302. extern void     pntsize( short );
  1303. extern void     pntsizef( float );
  1304. extern void     pntsmooth( unsigned long );
  1305. extern void     polarview( Coord, Angle, Angle, Angle );
  1306. extern void     polf( long, const Coord[][3] );
  1307. extern void     polf2( long, const Coord[][2] );
  1308. extern void     polf2i( long, const Icoord[][2] );
  1309. extern void     polf2s( long, const Scoord[][2] );
  1310. extern void     polfi( long, const Icoord[][3] );
  1311. extern void     polfs( long, const Scoord[][3] );
  1312. extern void     poly( long, const Coord[][3] );
  1313. extern void     poly2( long, const Coord[][2] );
  1314. extern void     poly2i( long, const Icoord[][2] );
  1315. extern void     poly2s( long, const Scoord[][2] );
  1316. extern void     polyi( long, const Icoord[][3] );
  1317. extern void     polymode( long );
  1318. extern void     polys( long, const Scoord[][3] );
  1319. extern void     polysmooth( long );
  1320. extern void     popattributes( void );
  1321. extern void     popmatrix( void );
  1322. extern void     popname( void );
  1323. extern void     popviewport( void );
  1324. extern void     prefposition( long, long, long, long );
  1325. extern void     prefsize( long, long );
  1326. extern void     pupmode( void );                        /* obsolete */
  1327. extern void     pushattributes( void );
  1328. extern void     pushmatrix( void );
  1329. extern void     pushname( short );
  1330. extern void     pushviewport( void );
  1331. extern void     pwlcurve( long, const double[], long, long );
  1332. extern long     qcontrol( long, long, const short[], long, short[] );
  1333. extern void     qdevice( Device );
  1334. extern void     qenter( Device, short );
  1335. extern long     qgetfd( void );
  1336. extern long     qread( short * );
  1337. extern void     qreset( void );
  1338. extern long     qtest( void );
  1339. extern void     rcrv( const Coord[4][4] );
  1340. extern void     rcrvn( long, const Coord[][4] );
  1341. extern void     rdr( Coord, Coord, Coord );
  1342. extern void     rdr2( Coord, Coord );
  1343. extern void     rdr2i( Icoord, Icoord );
  1344. extern void     rdr2s( Scoord, Scoord );
  1345. extern void     rdri( Icoord, Icoord, Icoord );
  1346. extern void     rdrs( Scoord, Scoord, Scoord );
  1347. extern void     readcomponent( long );
  1348. extern long     readdisplay( Screencoord, Screencoord, Screencoord, Screencoord, unsigned long[], unsigned long );
  1349. extern long     readpixels( short, Colorindex[] );
  1350. extern long     readRGB( short, RGBvalue[], RGBvalue[], RGBvalue[] );
  1351. extern void     readsource( long );
  1352. extern void     rect( Coord, Coord, Coord, Coord );
  1353. extern void     rectcopy( Screencoord, Screencoord, Screencoord, Screencoord, Screencoord, Screencoord );
  1354. extern void     rectf( Coord, Coord, Coord, Coord );
  1355. extern void     rectfi( Icoord, Icoord, Icoord, Icoord );
  1356. extern void     rectfs( Scoord, Scoord, Scoord, Scoord );
  1357. extern void     recti( Icoord, Icoord, Icoord, Icoord );
  1358. extern long     rectread( Screencoord, Screencoord, Screencoord, Screencoord, Colorindex[] );
  1359. extern void     rects( Scoord, Scoord, Scoord, Scoord );
  1360. extern void     rectwrite( Screencoord, Screencoord, Screencoord, Screencoord, const Colorindex[] );
  1361. extern void     rectzoom( float, float );
  1362. extern void     resetls( Boolean );                     /* not recommended */
  1363. extern void     reshapeviewport( void );
  1364. extern void     RGBcolor( short, short, short );
  1365. extern void     RGBcursor( short, short, short, short, short, short, short ); /* obsolete */
  1366. extern void     RGBmode( void );
  1367. extern void     RGBrange( short, short, short, short, short, short, Screencoord, Screencoord ); /* obsolete */
  1368. extern void     RGBsize( unsigned long );
  1369. extern void     RGBwritemask( short, short, short );
  1370. extern void     rightbuffer( Boolean );
  1371. extern void     ringbell( void );
  1372. extern void     rmv( Coord, Coord, Coord );
  1373. extern void     rmv2( Coord, Coord );
  1374. extern void     rmv2i( Icoord, Icoord );
  1375. extern void     rmv2s( Scoord, Scoord );
  1376. extern void     rmvi( Icoord, Icoord, Icoord );
  1377. extern void     rmvs( Scoord, Scoord, Scoord );
  1378. extern void     rot( float, char );
  1379. extern void     rotate( Angle, char );
  1380. extern void     rpatch( const Matrix, const Matrix, const Matrix, const Matrix );
  1381. extern void     rpdr( Coord, Coord, Coord );
  1382. extern void     rpdr2( Coord, Coord );
  1383. extern void     rpdr2i( Icoord, Icoord );
  1384. extern void     rpdr2s( Scoord, Scoord );
  1385. extern void     rpdri( Icoord, Icoord, Icoord );
  1386. extern void     rpdrs( Scoord, Scoord, Scoord );
  1387. extern void     rpmv( Coord, Coord, Coord );
  1388. extern void     rpmv2( Coord, Coord );
  1389. extern void     rpmv2i( Icoord, Icoord );
  1390. extern void     rpmv2s( Scoord, Scoord );
  1391. extern void     rpmvi( Icoord, Icoord, Icoord );
  1392. extern void     rpmvs( Scoord, Scoord, Scoord );
  1393. extern void     sbox( Coord, Coord, Coord, Coord );
  1394. extern void     sboxf( Coord, Coord, Coord, Coord );
  1395. extern void     sboxfi( Icoord, Icoord, Icoord, Icoord );
  1396. extern void     sboxfs( Scoord, Scoord, Scoord, Scoord );
  1397. extern void     sboxi( Icoord, Icoord, Icoord, Icoord );
  1398. extern void     sboxs( Scoord, Scoord, Scoord, Scoord );
  1399. extern void     scale( float, float, float );
  1400. extern void     sclear( unsigned long );
  1401. extern void     scrbox( long );
  1402. extern void     screenspace( void );
  1403. extern void     scrmask( Screencoord, Screencoord, Screencoord, Screencoord );
  1404. extern long     scrnattach( long );
  1405. extern long     scrnselect( long );
  1406. extern void     scrsubdivide( long, const float[] );
  1407. extern void     setbell( Byte );
  1408. extern void     setcursor( short, Colorindex, Colorindex );
  1409. extern void     setdblights( unsigned long );
  1410. extern void     setdepth( Screencoord, Screencoord );   /* obsolete */
  1411. extern void     setlinestyle( short );
  1412. extern void     setmap( short );
  1413. extern void     setmonitor( short );
  1414. extern void     setnurbsproperty( long, float );
  1415. extern void     setpattern( short );
  1416. extern void     setpup( long, long, unsigned long );
  1417. extern void     setshade( Colorindex );
  1418. extern void     setvaluator( Device, short, short, short );
  1419. extern void     setvideo( long, long );
  1420. extern void     shademodel( long );
  1421. extern void     shaderange( Colorindex, Colorindex, Screencoord, Screencoord ); /* obsolete */
  1422. extern void     singlebuffer( void );
  1423. extern void     smoothline( long );                     /* obsolete */
  1424. extern void     spclos( void );                         /* obsolete */
  1425. extern void     splf( long, const Coord[][3], const Colorindex[] );
  1426. extern void     splf2( long, const Coord[][2], const Colorindex[] );
  1427. extern void     splf2i( long, const Icoord[][2], const Colorindex[] );
  1428. extern void     splf2s( long, const Scoord[][2], const Colorindex[] );
  1429. extern void     splfi( long, const Icoord[][3], const Colorindex[] );
  1430. extern void     splfs( long, const Scoord[][3], const Colorindex[] );
  1431. extern void     stencil( long, unsigned long, long, unsigned long, long, long, long );
  1432. extern void     stensize( long );
  1433. extern void     stepunit( long, long );
  1434. extern void     stereobuffer( void );
  1435. extern long     strwidth( String );
  1436. extern void     subpixel( Boolean );
  1437. extern void     subtexload( long, long, float, float, float, float, long, const unsigned long[], unsigned long );
  1438. extern void     swapbuffers( void );
  1439. extern void     swapinterval( short );
  1440. extern void     swaptmesh( void );
  1441. extern long     swinopen( long );
  1442. extern void     swritemask( unsigned long );
  1443. extern void     t2d( const double[2] );
  1444. extern void     t2f( const float[2] );
  1445. extern void     t2i( const long[2] );
  1446. extern void     t2s( const short[2] );
  1447. extern void     t3d( const double[3] );
  1448. extern void     t3f( const float[3] );
  1449. extern void     t3i( const long[3] );
  1450. extern void     t3s( const short[3] );
  1451. extern void     t4d( const double[4] );
  1452. extern void     t4f( const float[4] );
  1453. extern void     t4i( const long[4] );
  1454. extern void     t4s( const short[4] );
  1455. extern void     tevbind( long, long );
  1456. extern void     tevdef( long, long, const float[] );
  1457. extern void     texbind( long, long );
  1458. extern void     texdef2d( long, long, long, long, const unsigned long[], long, const float[] );
  1459. extern void     texdef3d( long, long, long, long, long, const unsigned long[], long, const float[] );
  1460. extern void     texgen( long, long, const float[] );
  1461. extern void     textcolor( Colorindex );                /* not recommended */
  1462. extern void     textinit( void );                       /* not recommended */
  1463. extern void     textport( Screencoord, Screencoord, Screencoord, Screencoord ); /* not recommended */
  1464. extern void     tie( Device, Device, Device );
  1465. extern void     tlutbind( long, long );
  1466. extern void     tlutdef( long, long, long, const unsigned long[], long, const float[] );
  1467. extern void     tpoff( void );                          /* not recommended */
  1468. extern void     tpon( void );                           /* not recommended */
  1469. extern void     translate( Coord, Coord, Coord );
  1470. extern void     underlay( long );
  1471. extern void     unqdevice( Device );
  1472. extern void     v2d( const double[2] );
  1473. extern void     v2f( const float[2] );
  1474. extern void     v2i( const long[2] );
  1475. extern void     v2s( const short[2] );
  1476. extern void     v3d( const double[3] );
  1477. extern void     v3f( const float[3] );
  1478. extern void     v3i( const long[3] );
  1479. extern void     v3s( const short[3] );
  1480. extern void     v4d( const double[4] );
  1481. extern void     v4f( const float[4] );
  1482. extern void     v4i( const long[4] );
  1483. extern void     v4s( const short[4] );
  1484. extern void     videocmd( long );
  1485. extern void     viewport( Screencoord, Screencoord, Screencoord, Screencoord );
  1486. extern long     winattach( void );                      /* obsolete */
  1487. extern void     winclose( long );
  1488. extern void     winconstraints( void );
  1489. extern long     windepth( long );
  1490. extern void     window( Coord, Coord, Coord, Coord, Coord, Coord );
  1491. extern long     winget( void );
  1492. extern void     winmove( long, long );
  1493. extern long     winopen( String );
  1494. extern void     winpop( void );
  1495. extern void     winposition( long, long, long, long );
  1496. extern void     winpush( void );
  1497. extern void     winset( long );
  1498. extern void     wintitle( String );
  1499. extern void     wmpack( unsigned long );
  1500. extern void     writemask( Colorindex );
  1501. extern void     writepixels( short, const Colorindex[] );
  1502. extern void     writeRGB( short, const RGBvalue[], const RGBvalue[], const RGBvalue[] );
  1503. extern void     xfpt( Coord, Coord, Coord );            /* not recommended */
  1504. extern void     xfpt2( Coord, Coord );                  /* not recommended */
  1505. extern void     xfpt2i( Icoord, Icoord );               /* not recommended */
  1506. extern void     xfpt2s( Scoord, Scoord );               /* not recommended */
  1507. extern void     xfpt4( Coord, Coord, Coord, Coord );    /* not recommended */
  1508. extern void     xfpt4i( Icoord, Icoord, Icoord, Icoord ); /* not recommended */
  1509. extern void     xfpt4s( Scoord, Scoord, Scoord, Scoord ); /* not recommended */
  1510. extern void     xfpti( Icoord, Icoord, Icoord );        /* not recommended */
  1511. extern void     xfpts( Scoord, Scoord, Scoord );        /* not recommended */
  1512. extern void     zbsize( long );
  1513. extern void     zbuffer( Boolean );
  1514. extern void     zclear( void );
  1515. extern void     zdraw( Boolean );
  1516. extern void     zfunction( long );
  1517. extern void     zsource( long );                        /* not recommended */
  1518. extern void     zwritemask( unsigned long );
  1519. /*
  1520.  * Workarounds for collisions with X header files.  gl.h contains
  1521.  * two copies of this, once to define and once to undef
  1522.  */
  1523.  
  1524. #ifdef _GL_UNDEF_TYPES
  1525.  
  1526. /* this is the second time, remove my ugliness */
  1527. #undef String
  1528. #undef Boolean
  1529. #undef Object
  1530.  
  1531. #else
  1532.  
  1533. /* this is the first time, create the ugliness */
  1534. #ifdef _XtIntrinsic_h
  1535. #define String GL_String
  1536. #define Boolean GL_Boolean
  1537. #endif
  1538.  
  1539. #ifdef _XtObject_h
  1540. #define Object GL_Object
  1541. #endif
  1542.  
  1543. #define _GL_UNDEF_TYPES
  1544.  
  1545. #endif
  1546. #ifdef __cplusplus
  1547. }
  1548. #endif
  1549. #endif /* !__GL_GL_H__ */
  1550.